﻿<!DOCTYPE HTML>
<html lang="zh">
<head>
<title>MouseClick - 语法 &amp; 使用 | AutoHotkey v2</title>
<meta name="description" content="The MouseClick function clicks or holds down a mouse button, or turns the mouse wheel." />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link href="../static/theme.css" rel="stylesheet" type="text/css" />
<script src="../static/content.js" type="text/javascript"></script>
<script type="text/javascript">$(function(){0<=window.navigator.userAgent.toLowerCase().indexOf("ucbrowser")&&CaoNiMaDeUc()})</script>
</head>
<body>

<h1>MouseClick</h1>

<p>点击或按住鼠标按钮, 或滚动鼠标滚轮. 注意: <a href="Click.htm">Click 函数</a>通常更灵活和易于使用.</p>

<pre class="Syntax"><span class="func">MouseClick</span> <span class="optional">WhichButton, X, Y, ClickCount, Speed, DownOrUp, Relative</span></pre>
<h2 id="Parameters">参数</h2>
<dl>

  <dt>WhichButton</dt>
  <dd>
      <p>类型: <a href="../Concepts.htm#strings">字符串</a></p>
      <p><u>要点击的按钮</u>: Left(默认), Right, Middle(或仅使用这些名称的首字母); 或鼠标的第四或第五个按钮(X1 或 X2). 例如: <code>MouseClick "X1"</code>. 此参数可以省略, 此时它默认为 Left.</p>
      <p>Left 和 Right 对应于主按钮和次按钮. 如果用户通过系统设置调换了按钮, 按钮的物理位置被调换, 但效果不变.</p>
      <p><u>要转动的鼠标滚轮</u>: 指定 WheelUp 或 WU 来向上转动滚轮(远离您的方向); 指定 WheelDown 或 WD 来向下转动滚轮(靠近您的方向). 指定 WheelLeft(或 WL) 或 WheelRight(或 WR) 分别向左或向右滚动滚轮. <em>ClickCount</em> 为需要转动的滚轮格数.</p>
  </dd>

  <dt>X, Y</dt>
  <dd>
    <p>类型: <a href="../Concepts.htm#numbers">整数</a></p>
    <p>在点击前, 鼠标光标要移动到的 x/y 坐标. 除非曾使用 <a href="CoordMode.htm">CoordMode</a> 改变了这个设置, 坐标相对于活动窗口. 如果省略, 那么使用光标的当前位置.</p>
  </dd>

  <dt>ClickCount</dt>
  <dd>
    <p>类型: <a href="../Concepts.htm#numbers">整数</a></p>
    <p>点击鼠标的次数. 如果省略, 那么点击鼠标一次.</p>
  </dd>

  <dt>Speed</dt>
  <dd>
    <p>类型: <a href="../Concepts.htm#numbers">整数</a></p>
    <p>移动鼠标的速度, 介于 0(最快) 和 100(最慢) 之间.</p>
    <p class="note"><strong>注意</strong>: 速度为 0 表示瞬时移动鼠标.</p>
    <p>如果省略, 则使用默认速度(由 <a href="SetDefaultMouseSpeed.htm">SetDefaultMouseSpeed</a> 设置, 否则为 2).</p>
    <p>对于 <a href="SendMode.htm">SendInput/Play 模式</a>会忽略 <em>Speed</em>; 它们会瞬时移动鼠标到目标位置(不过 <a href="SetMouseDelay.htm">SetMouseDelay</a> 有适用于 SendPlay 的模式). 要显示鼠标移动轨迹(例如使用脚本向观众进行演示时) -- 请使用 <code><a href="Send.htm#Click">SendEvent</a> "{Click 100 200}"</code> 或 <code><a href="SendMode.htm">SendMode</a> "Event"</code>(可以和 <a href="BlockInput.htm">BlockInput</a> 联合使用).</p>
    <p>如果省略, 则使用默认速度(由 <a href="SetDefaultMouseSpeed.htm">SetDefaultMouseSpeed</a> 设置, 否则为 2).</p>
  </dd>

  <dt>DownOrUp</dt>
  <dd>
    <p>类型: <a href="../Concepts.htm#strings">字符串</a></p>
    <p>如果省略, 则每次点击会由 "按下" 事件后接着 "弹起" 事件组成. 要更改此行为, 请指定以下字母之一:</p>
    <p><strong>D:</strong> 按下鼠标按钮, 但不释放(即生成按下事件).</p>
    <p><strong>U:</strong> 释放鼠标按钮(即生成弹起事件).</p>
  </dd>

  <dt>Relative</dt>
  <dd>
    <p>类型: <a href="../Concepts.htm#strings">字符串</a></p>
    <p>如果省略, 则将 X 和 Y 坐标视为绝对值. 要更改此行为, 请指定下面的字母:</p>
    <p><strong>R:</strong> 将 X 和 Y 坐标视为距离当前鼠标位置的偏移. 换句话说, 会把光标从当前位置往右移动 X 像素(负值则往左) 且往下移动 Y 像素(负值则往上).</p>
  </dd>

</dl>

<h2 id="Remarks">备注</h2>
<p>这个函数使用 <a href="SendMode.htm">SendMode</a> 设置的发送方法.</p>
<p>比起 MouseClick, 推荐使用 <a href="Click.htm">Click 函数</a>, 因为:</p>
<ol>
  <li>当鼠标左键和右键通过控制面板交换时, 它会自动适应.</li>
  <li>它一般更容易使用.</li>
</ol>
<p>要进行 shift-click 或 control-click, 请在操作前后使用 <a href="Send.htm">Send</a> 函数, 如下面的例子所示:</p>
<pre><em>; 示例 #1: </em>
Send "{Control down}"
MouseClick "left", 55, 233
Send "{Control up}"</pre>
<pre>
<em>; 示例 #2:</em>
Send "{Shift down}"
MouseClick "left", 55, 233
Send "{Shift up}"</pre>
<p><a href="SendMode.htm">SendPlay 模式</a>生成的鼠标事件可以比其他模式适应更大范围的游戏. 此外, 某些应用程序和游戏在鼠标移动过快时可能会跟踪困难. 可以使用 的 <em>speed</em> 参数或 <a href="SetDefaultMouseSpeed.htm">SetDefaultMouseSpeed</a> 来降低鼠标的速度(仅对默认的 <a href="SendMode.htm">SendEvent 模式</a>有效).</p>
<p>有些程序不接受鼠标滚轮转动的格数 <em>ClickCount</em> 大于 1 的情况. 对于这些程序, 请参考下面的例子使用 <a href="Loop.htm">Loop</a>:</p>
<pre>Loop 5
    MouseClick "WheelUp"</pre>
<p>可以使用 <a href="BlockInput.htm">BlockInput</a> 函数防止用户对鼠标的任何物理操作干扰由鼠标函数产生的模拟鼠标事件. 不过, 在 <a href="SendMode.htm">SendInput/Play</a> 模式中通常不需要这样做, 因为它们会自动将用户对鼠标的物理操作延迟到发送之后.</p>
<p>在每次鼠标按下事件和鼠标弹起事件后都会有一个自动的延时(不包括在 <a href="SendMode.htm">SendInput 模式</a>中转动鼠标滚轮的情况). 使用 <a href="SetMouseDelay.htm">SetMouseDelay</a> 可以改变延时的长度.</p>
<h2 id="Related">相关</h2>
<p><a href="CoordMode.htm">CoordMode</a>, <a href="SendMode.htm">SendMode</a>, <a href="SetDefaultMouseSpeed.htm">SetDefaultMouseSpeed</a>, <a href="SetMouseDelay.htm">SetMouseDelay</a>, <a href="Click.htm">Click</a>, <a href="MouseClickDrag.htm">MouseClickDrag</a>, <a href="MouseGetPos.htm">MouseGetPos</a>, <a href="MouseMove.htm">MouseMove</a>, <a href="ControlClick.htm">ControlClick</a>, <a href="BlockInput.htm">BlockInput</a></p>
<h2 id="Examples">示例</h2>
<div class="ex" id="ExDoubleClick">
<p><a class="ex_number" href="#ExDoubleClick"></a> 在当前鼠标位置双击.</p>
<pre>MouseClick "left"
MouseClick "left"</pre>
</div>

<div class="ex" id="ExDoubleClick2">
<p><a class="ex_number" href="#ExDoubleClick2"></a> 同上.</p>
<pre>MouseClick "left", , , 2</pre>
</div>

<div class="ex" id="ExMove">
<p><a class="ex_number" href="#ExMove"></a> 移动鼠标光标到指定位置, 然后点击一次右键.</p>
<pre>MouseClick "right", 200, 300</pre>
</div>

<div class="ex" id="ExWheel">
<p><a class="ex_number" href="#ExWheel"></a> 模拟转动鼠标滚动.</p>
<pre>#up::MouseClick "WheelUp",,, 2  <em>; 把它转两个位置.</em>
#down::MouseClick "WheelDown",,, 2</pre>
</div>

</body>
</html>